﻿using MyAbpFrame.Application.LocalHandlers.HandlerEvents;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus;
/// <summary>
/// 本地事件总线
/// </summary>
namespace MyAbpFrame.Application.LocalHandlers
{
    //这就是全部,MyHandler 由ABP框架自动发现, 并在发生 StockCountChangedEvent 事件时调用 HandleEventAsync.
    //事件可以由0个或多个处理程序订阅.
    //一个事件处理程序可以订阅多个事件,但是需要为每个事件实现 ILocalEventHandler<TEvent> 接口.

    //如果您执行数据库操作并在事件处理程序中使用仓储,那么您可能需要创建一个工作单元,因为一些存储库方法需要在活动的工作单元中工作. 
    //确保处理方法设置为 virtual,并为该方法添加一个[UnitOfWork] attribute.或者手动使用 IUnitOfWorkManager 创建一个工作单元范围.
    public class MyHandler : ILocalEventHandler<StockCountChangedEvent>, ITransientDependency
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="eventData"></param>
        /// <returns></returns>
        public async Task HandleEventAsync(StockCountChangedEvent eventData)
        {
            var id = eventData.ProductId;
            var num = eventData.NewCount;
            await Task.CompletedTask;
        }
    }
}
